﻿using System;
using System.Collections.Generic;
using System.Data;
using AccesoData.Interfaces;
using Entidades;
using MySql.Data.MySqlClient;

namespace AccesoData.DAOMySql
{
    /// <summary>
    /// clase que lleva el control de acceso a la base de datos de mysql
    /// </summary>
    class DAOSucursalMySql : ConexionBaseDatos, IDAOSucursal
    {
        #region Metodos
        
        /// <summary>
        /// metdo que agrega una sucursal a la base de datos
        /// </summary>
        /// <param name="miSucursal"></param>
        /// <returns></returns>
        public int AgregarSucursal (Sucursal miSucursal)
        {
            try
            {
                MySqlCommand comando = new MySqlCommand();
                comando.Connection = Conexion();
                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = "AgregarSucursal";


                comando.Parameters.AddWithValue("@idAseguradora", miSucursal.IdAseguradora);
                comando.Parameters.AddWithValue("@idLugar", miSucursal.Direccion.Id);
                comando.Parameters.AddWithValue("@telefono1", miSucursal.Telefono1);
                comando.Parameters.AddWithValue("@telefono2", miSucursal.Telefono2);
                comando.Parameters.AddWithValue("@tipo", miSucursal.Tipo);

                comando.Parameters["@idAseguradora"].Direction = ParameterDirection.Input;
                comando.Parameters["@idLugar"].Direction = ParameterDirection.Input;
                comando.Parameters["@telefono1"].Direction = ParameterDirection.Input;
                comando.Parameters["@telefono2"].Direction = ParameterDirection.Input;
                comando.Parameters["@tipo"].Direction = ParameterDirection.Input;
                int id = 0;
                MySqlDataReader reader = comando.ExecuteReader();
                while (reader.Read())
                {
                    id = (reader[0] == DBNull.Value) ? 0 : (int)reader[0];
                }

                CerrarConexion();
                return id;
            }
            catch (Exception)
            {
                return -1;
            }
        }

        /// <summary>
        /// Obtiene todas las sucursales de un aseguradora en especifico
        /// </summary>
        /// <param name="idAseguradora">identificador de la aseguradora</param>
        /// <returns>lista de sucursales</returns>
        public List<Sucursal> ObtenerSucursales (int idAseguradora)
        {
            try
            {
                List<Sucursal> retorno = new List<Sucursal>();
                MySqlCommand comando = new MySqlCommand();
                comando.Connection = Conexion();
                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = "ObtenerSucursales";


                comando.Parameters.AddWithValue("@idAseguradora", idAseguradora);
                comando.Parameters["@idAseguradora"].Direction = ParameterDirection.Input;
                MySqlDataReader reader = comando.ExecuteReader();


                while (reader.Read())
                {
                    Sucursal miSucursal = FabricaEntidades.ObtenerSucursal();
                    miSucursal.Id = (int) reader[0];
                    miSucursal.Tipo = (string) reader[1];
                    miSucursal.Direccion.Id = (int) reader[2];
                    miSucursal.Telefono1 = (string)reader[3];
                    miSucursal.Telefono2 = (string)reader[4];
                    retorno.Add(miSucursal);
                }

                return retorno;


            }
            catch (Exception)
            {

                return null;
            }
        }

        #endregion


    }
}
